home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************/
- /* COMMENTS - macro for the ME text editor to handle comments */
- /* when programming in C. */
- /* */
- /* Written 1/23/87 by Marc Adler of Magma Software Systems */
- /* 138 - 23 Hoover Ave. */
- /* Jamaica, NY 11435 */
- /* */
- /********************************************************************/
-
-
- #define ALT_A 158
- #define ALT_C 174
-
- int CommentColumn;
-
- init()
- {
- CommentColumn = 55;
- assign_key("align_file", ALT_A);
- assign_key("do_comment", ALT_C);
- }
-
- /* align_file - aligns all comments in a file */
- align_file()
- {
- int lastln, i;
- int startcol;
-
- lastln = lastlinenum();
- gobof();
-
- for (i = 1; i <= lastln; i = i + 1)
- {
- if ((startcol = index(currline(), "/*")) > 1 && /* has a cmnt already */
- /* If the comment is the only thing on the line, then don't touch it. */
- !is_line_blank(substr(currline(), 1, startcol - 1)))
- do_comment();
- gobol();
- down();
- }
- }
-
- /* do_comment - inserts a comment if none already in a line */
- /* or else aligns the comment at CommentColumn */
- do_comment()
- {
- string cl;
- int startcol, textcol;
-
- if ((startcol = index(currline(), "/*")) > 0) /* has a cmnt already */
- {
- setcol(startcol); /* move to the comment */
- if (startcol < CommentColumn)
- /* slide the comment over till it hits the comment column */
- insert(repstr(" ", CommentColumn - startcol));
- else
- {
- /* slide the comment leftwards */
- save_position();
- /* move the cursor left until we reach a non-blank column */
- left();
- while (currchar() == ' ' && !isbol())
- left();
- textcol = currcol(); /* save the column # of the last char */
- restore_position();
-
- /* Delete leftwards until we reach the starting column */
- while (startcol > textcol + 3 && startcol > CurrentColumn)
- {
- backspace();
- startcol--;
- }
- } /* if startcol < CommentCol */
- } /* if startcol = index() */
-
- else /* No comment in the line yet, so insert one */
- {
- cl = currline(); /* make a copy of the current line*/
- if (substr(cl, strlen(cl), 1) == " ")
- {
- rtrim(cl); /* get rid of the trailing blanks */
- gobol(); /* on the current line */
- deleol();
- insert(cl);
- }
-
- if (currcol() < CommentColumn) /* move to the comment column */
- setcol(CommentColumn);
- insert("/* */"); /* put the comment at the end of the ln */
- left(); left(); left(); /* move to just after the open comment */
- }
- }
-
- is_line_blank(str)
- string str;
- {
- int i;
- int len;
-
- len = strlen(str);
-
- for (i = 1; i <= len; i++)
- if (substr(str, i, 1) != " ")
- return 0;
- return 1;
- }
-